maze = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 1, 1, 0, 0, 0, 1, 1, 1],
    [1, 0, 1, 1, 1, 1, 0, 0, 1, 1],
    [1, 0, 1, 0, 0, 0, 0, 0, 1, 1],
    [1, 0, 1, 0, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
    [1, 1, 1, 0, 0, 1, 0, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]

start = (1, 1)
end = (8, 6)

# 定义列表，列表里面放的就是每一步走的坐标，[r, c]
# 第一步就是起始位置，也就是start
list01 = [start]

# 定义循环，让它走
# 列表里最后存的就是下一步走的地方，当前列表有东西才能继续走
while list01:
    # 当前走到的节点是哪一个节点，也就是最后走的一步，是哪一步，去列表的最后的一个值就是索引-1
    now = list01[-1]
    if now == end:  # 如果现在的now等于我们之前定义的终点end
        print(list01)
        print("出来了")
        break
    row, col = now
    # python 里的解构也叫解包 now包括两个位置，一个行，一个列
    maze[row][col] = 2
    # 这个代表就是走过的点，为2，因为你走过的路是不能再走的，除了走不通返回的时候，也就是为了走不通按原来走过的路原路返回

    # continue 结束本次循环，从新开始判断走路
    if maze[row - 1][col] == 0:
        # 上方可以走
        list01.append((row - 1, col))
        continue
    elif maze[row][col + 1] == 0:
        # 右方可以走
        list01.append((row, col + 1))
        continue
    elif maze[row + 1][col] == 0:
        # 下方可以走
        list01.append((row + 1, col))
        continue
    elif maze[row][col - 1] == 0:
        # 左方可以走
        list01.append((row, col - 1))
        continue
    else:  # 走不通过，直接循环干掉每一步，重新调整路线
        list01.pop()

else:
    print("这无法到达指定位置")